package erwiki.ui.app.parts.navigation.handlers;

import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.jface.window.Window;
import org.elwiki_data.WikiPage;

import erwiki.api.core.Engine;
import erwiki.api.pages.PageManager;
import erwiki.ui.app.parts.navigation.NavigationView;
import erwiki.ui.app.parts.navigation.dialogs.NewPageDialog;
import jakarta.inject.Inject;

public class RenamePage {

	@Inject
	Engine engine;

	@Execute
	public void execute(EPartService partService) {
		NewPageDialog pageParamsDialog = new NewPageDialog(null);
		if (pageParamsDialog.open() == Window.OK) {
			// workaround - получить выбранную страницу.
			MPart part = partService.findPart(NavigationView.ID);
			NavigationView navigationView = (NavigationView) part.getObject();
			WikiPage selectedWikiPage = navigationView.getSelectedWikiPage();

			PageManager pageManager = engine.getManager(PageManager.class);
			String newName = pageParamsDialog.getPageName();
			pageManager.renamePage(newName, selectedWikiPage);
		}
	}

	@CanExecute
	public boolean canExecute() {
		// TODO: проверка доступа.
		// Действие Pop-up меню для изменения данных доступно только пользователям соответствующей роли. */
		return true;
	}

}
